//package com.mobile.service.impl;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONObject;
//import com.mobile.service.dao.DaoSupport;
//import com.mobile.service.inter.ConnectionMonitorService;
//import com.mobile.util.*;
//import org.apache.logging.log4j.LogManager;
//import org.apache.logging.log4j.Logger;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import javax.annotation.Resource;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.concurrent.ArrayBlockingQueue;
//import java.util.concurrent.Executor;
//import java.util.concurrent.ThreadPoolExecutor;
//import java.util.concurrent.TimeUnit;
//import java.util.concurrent.atomic.AtomicReference;
//
//
///**
// * 通讯监控Service实现类
// * @author wangbaorui
// */
//@Service("connectionMonitorService")
//@Transactional
//public class ConnectionMonitorServiceImpl implements ConnectionMonitorService {
//    protected Logger logger = LogManager.getLogger(this.getClass());
//    @Resource(name = "daoSupport")
//    private DaoSupport dao;
//    @Value("${pulsar.topic}")
//    String topic;
//    @Value("${pulsar.subscriptionName}")
//    String subscriptionName;
//    @Value("${pulsar.url}")
//    private String url;
//    Executor executor ;
//    /**
//     * 通讯监控列表
//     * @param page
//     * @return
//     */
//    @Override
//    public List<PageData> getConnectionMonitorlistPage(Page page) throws Exception {
//        return (List<PageData>) dao.findForList("ConnectionMonitorMapper.getConnectionMonitorlistPage", page);
//    }
//    /**
//     * 所有需要监控的列表
//     * @param pageData
//     * @return
//     */
//    @Override
//    public List<PageData> getConnectionMonitorlistByMonitor(PageData pageData) throws Exception {
//        return (List<PageData>) dao.findForList("ConnectionMonitorMapper.getConnectionMonitorlistByMonitor", pageData);
//    }
//    /**
//     * 新增通讯监控
//     * @param pageData
//     * @return
//     * @throws Exception
//     */
//    @Override
//    public Map<String, Object> insertConnectionMonitor(PageData pageData) throws Exception {
//        Map<String, Object> map = new HashMap<>();
//        int i=(int) dao.findForObject("ConnectionMonitorMapper.getConnectionMonitorConut", pageData);
//        if (i > 0) {
//            map.put(Const.ACTION_RESULT, Const.ACTION_RESULT_FAILED);
//            map.put(Const.ACTION_MESSAGE, MessageUtil.getMessage("E0096"));
//            return map;
//        }
//        dao.save("ConnectionMonitorMapper.insertMonitor",pageData);
//        //添加短信通知人
//        List<PageData> list = new ArrayList<>();
//        if (pageData.getString("sendPeople").length()>0) {
//            String[] userCode = pageData.getString("sendPeople").split(",");
//            PageData notifier;
//            for (String userCode1 : userCode) {
//                notifier = new PageData();
//                notifier.put("userCode", userCode1);
//                notifier.put("resId", Integer.valueOf(pageData.get("commId").toString()));
//                notifier.put("sendType", pageData.getString("sendType"));
//                notifier.put("createUser", pageData.getString("createUser"));
//                notifier.put("updateUser", pageData.getString("updateUser"));
//                list.add(notifier);
//            }
//            if (list.size() > 0) {
//                dao.save("MResourceManageMapper.insertResourceNotifier", list);
//            }
//        }
//        map.put(Const.ACTION_RESULT, Const.ACTION_RESULT_SUCCESS);
//        map.put(Const.ACTION_MESSAGE, MessageUtil.getMessage("I0011"));
//        return map;
//    }
//
//    @Override
//    public List<PageData> getResourceNotifier(PageData pageData) throws Exception {
//        return (List<PageData>) dao.findForList("MResourceManageMapper.getResourceNotifier",pageData);
//    }
//
//    /**
//     * 执行简单sql验证mysql数据库是否正常通讯
//     * @throws Exception
//     */
//    @Override
//    public void testDB() throws Exception {
//        dao.findForList("ConnectionMonitorMapper.testDB",null);
//    }
//
//    /**
//     * 修改通讯监控
//     * @param pageData
//     * @return
//     * @throws Exception
//     */
//    @Override
//    public Map<String, Object> updateConnectionMonitor(PageData pageData) throws Exception {
//        Map<String, Object> map = new HashMap<>();
//        //判断值是否存在
//        Object obj = dao.findForObject("ConnectionMonitorMapper.getMonitorById", pageData.getString("commId") );
//        if (StringUtil.isEmpty(obj)) {
//            map.put(Const.ACTION_RESULT, Const.ACTION_RESULT_FAILED);
//            map.put(Const.ACTION_MESSAGE, MessageUtil.getMessage("E0001"));
//            return map;
//        }
//
//        int i=(int) dao.findForObject("ConnectionMonitorMapper.getConnectionMonitorConut", pageData);
//        if (i > 0) {
//            map.put(Const.ACTION_RESULT, Const.ACTION_RESULT_FAILED);
//            map.put(Const.ACTION_MESSAGE, MessageUtil.getMessage("E0096"));
//            return map;
//        }
//        // 解析短信通知人
//        List<PageData> list = new ArrayList<>();
//        pageData.put("resId", Integer.valueOf(pageData.getString("commId")));
//        dao.delete("MResourceManageMapper.deleteResourceNotifier", pageData);
//        if (!StringUtil.isEmpty(pageData.get("sendPeople"))&&pageData.getString("sendPeople").length()>0){
//            String[] userCode = pageData.getString("sendPeople").split(",");
//            PageData notifier;
//            for (String userCode1:userCode) {
//                notifier = new PageData();
//                notifier.put("userCode",userCode1);
//                notifier.put("resId",Integer.valueOf(pageData.get("resId").toString()));
//                notifier.put("sendType", pageData.getString("sendType"));
//                notifier.put("createUser",pageData.getString("createUser"));
//                notifier.put("updateUser",pageData.getString("updateUser"));
//                list.add(notifier);
//            }
//            dao.save("MResourceManageMapper.insertResourceNotifier", list);
//        }
//
//        dao.update("ConnectionMonitorMapper.updateMonitor",pageData);
//        map.put(Const.ACTION_RESULT, Const.ACTION_RESULT_SUCCESS);
//        map.put(Const.ACTION_MESSAGE, MessageUtil.getMessage("I0009"));
//        return map;
//    }
//    /**
//     * 删除监控
//     *
//     * @param commId
//     */
//    @Override
//    public Map<String, Object> removeMonitor(Integer commId) throws Exception {
//        Map<String, Object> map = new HashMap<>();
//        dao.delete("ConnectionMonitorMapper.deleteMonitor", commId);
//        //删除短信通知人
//        PageData pd = new PageData();
//        pd.put("resId", commId);
//        pd.put("sendType", Const.SEND_TYPE_CONNECTION);
//        dao.delete("MResourceManageMapper.deleteResourceNotifier", pd);
//        map.put(Const.ACTION_RESULT, Const.ACTION_RESULT_SUCCESS);
//        map.put(Const.ACTION_MESSAGE, MessageUtil.getMessage("I0010"));
//        return map;
//    }
//    /**
//     * 根据id查询监控信息
//     *
//     * @param id
//     * @return
//     */
//    @Override
//    public PageData getMonitorById(Integer id) throws Exception {
//        return (PageData) dao.findForObject("ConnectionMonitorMapper.getMonitorById", id);
//    }
//
//    /**
//     * 监控单进程
//     *
//     * @param pd
//     */
//
//
//    /**
//     * 日志列表
//     * @param pd
//     * @return
//     * @throws Exception
//     */
//    @Override
//    public List<PageData>  logRecord(Page pd) throws Exception {
//        return (List<PageData>) dao.findForList("ConnectionMonitorMapper.getConnectionMonitorLoglistPage", pd);
//
//    }
//
//    /**
//     * 字符串转pagedata
//     * @param str
//     * @return
//     */
//    PageData getPd(String str) {
//        PageData pageData = new PageData();
//        if (!str.contains(":")) {
//            return null;
//        }
//        for (String s : str.split(",")) {
//            pageData.put(s.split(":")[0], s.split(":")[1]);
//        }
//        return pageData;
//    }
//    /**
//     * 定时任务 定时监控
//     * @throws Exception
//     */
//    @Scheduled(cron = "0 0 0/1 * * ? ")
//    public void connectionMonitorTaskEveryMonth() throws Exception {
//        connectionMonitorTask(Const.MONITOR_TASK_USER);
//    };
//
//    /**
//     * 监控测试
//     * @param userCode
//     * @throws Exception
//     */
//    @Override
//    public void connectionMonitorTask(String userCode) throws Exception {
//        List<PageData> list=(List<PageData>) dao.findForList("ConnectionMonitorMapper.getConnectionMonitorlistByMonitor");
//        for (PageData pageData : list) {
//            monitor(pageData, userCode);
//        }
//    }
//
//    @Override
//    public List<PageData> getConnectionMonitorByUrl(PageData pd) throws Exception {
//        return (List<PageData>) dao.findForList("ConnectionMonitorMapper.getConnectionMonitorByUrl",pd);
//    }
//
//    ;
//
//    /**
//     * 定时任务,清理超过三个月的日志
//     */
//    @Scheduled(cron = "0 0 0 L 1/3 ? ")
//    void deleteMonitorOver3Month() throws Exception {
//        dao.delete("ConnectionMonitorMapper.deleteMonitorOver3Month", null);
//    }
//
//}
